package 作用域相关;

import java.util.LinkedHashMap;
import java.util.Map;

public class 类符号 extends 作用域符号 implements 类型 {
    public 类符号(String 名称, 作用域 外围作用域, 类符号 父类) {
        super(名称, 外围作用域);
        this.父类 = 父类;
    }

    public 类符号 父类;
    public Map<String, 符号> 成员 = new LinkedHashMap<>();


    @Override
    public 作用域 取父作用域() {
        if (父类 != null) {
            return 父类;
        }

        return 外围作用域;
    }

    public 符号 解析成员(String 名称) {
        // 先在本作用域内找该符号，如果找不到就到父类中找

        if (成员.containsKey(名称)) {
            return 成员.get(名称);
        }

        if (父类 != null) {
            return 父类.解析成员(名称);
        }

        return null;
    }

    @Override
    public Map<String, 符号> 取成员() {
        return 成员;
    }

    @Override
    public String toString() {
        return "类 " + 名称 + ":{" + 去除括号(成员.keySet().toString()) + "}";
    }
}
